import request from '@utils/request'

/**
 * 获取用户列表
 * @param {Object} params - 查询参数
 * @returns {Promise} 返回用户列表数据
 */
export function getUsers(params) {
  return request({
    url: '/admin/users',
    method: 'get',
    params
  })
}

/**
 * 获取用户详情
 * @param {number} id - 用户ID
 * @returns {Promise} 返回用户详情
 */
export function getUserDetail(id) {
  return request({
    url: `/admin/users/${id}`,
    method: 'get'
  })
}

/**
 * 创建用户
 * @param {Object} data - 用户数据
 * @returns {Promise} 返回创建结果
 */
export function createUser(data) {
  return request({
    url: '/admin/users',
    method: 'post',
    data
  })
}

/**
 * 更新用户
 * @param {number} id - 用户ID
 * @param {Object} data - 用户数据
 * @returns {Promise} 返回更新结果
 */
export function updateUser(id, data) {
  return request({
    url: `/admin/users/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除用户
 * @param {number} id - 用户ID
 * @returns {Promise} 返回删除结果
 */
export function deleteUser(id) {
  return request({
    url: `/admin/users/${id}`,
    method: 'delete'
  })
}

/**
 * 批量删除用户
 * @param {number[]} ids - 用户ID数组
 * @returns {Promise} 返回批量删除结果
 */
export function batchDeleteUsers(ids) {
  return request({
    url: '/admin/users/batch',
    method: 'delete',
    data: { ids }
  })
}

/**
 * 更新用户状态
 * @param {number} id - 用户ID
 * @param {number} status - 状态值
 * @returns {Promise} 返回更新结果
 */
export function updateUserStatus(id, status) {
  return request({
    url: `/admin/users/${id}/status`,
    method: 'put',
    data: { status }
  })
}

/**
 * 批量更新用户状态
 * @param {number[]} ids - 用户ID数组
 * @param {number} status - 状态值
 * @returns {Promise} 返回批量更新结果
 */
export function batchUpdateUserStatus(ids, status) {
  return request({
    url: '/admin/users/batch/status',
    method: 'put',
    data: { ids, status }
  })
}

/**
 * 重置用户密码
 * @param {number} id - 用户ID
 * @returns {Promise} 返回重置结果
 */
export function resetUserPassword(id) {
  return request({
    url: `/admin/users/${id}/password/reset`,
    method: 'put'
  })
}

/**
 * 批量重置用户密码
 * @param {number[]} ids - 用户ID数组
 * @returns {Promise} 返回批量重置结果
 */
export function batchResetUserPassword(ids) {
  return request({
    url: '/admin/users/batch/password/reset',
    method: 'put',
    data: { ids }
  })
}

/**
 * 更新用户角色
 * @param {number} id - 用户ID
 * @param {number[]} roleIds - 角色ID数组
 * @returns {Promise} 返回更新结果
 */
export function updateUserRoles(id, roleIds) {
  return request({
    url: `/admin/users/${id}/roles`,
    method: 'put',
    data: { roleIds }
  })
}

/**
 * 获取用户角色列表
 * @param {number} id - 用户ID
 * @returns {Promise} 返回角色列表
 */
export function getUserRoles(id) {
  return request({
    url: `/admin/users/${id}/roles`,
    method: 'get'
  })
}

/**
 * 获取用户统计数据
 * @returns {Promise} 返回统计数据
 */
export function getUserStats() {
  return request({
    url: '/admin/users/stats',
    method: 'get'
  })
}

/**
 * 导出用户数据
 * @param {Object} params - 导出参数
 * @returns {Promise} 返回导出结果
 */
export function exportUsers(params) {
  return request({
    url: '/admin/users/export',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 获取用户消费记录
 * @param {number} id - 用户ID
 * @param {Object} params - 查询参数
 * @returns {Promise} 返回消费记录
 */
export function getUserOrders(id, params) {
  return request({
    url: `/admin/users/${id}/orders`,
    method: 'get',
    params
  })
}

/**
 * 获取用户收货地址
 * @param {number} id - 用户ID
 * @returns {Promise} 返回收货地址列表
 */
export function getUserAddresses(id) {
  return request({
    url: `/admin/users/${id}/addresses`,
    method: 'get'
  })
}

/**
 * 获取用户等级列表
 * @returns {Promise} 返回等级列表
 */
export function getUserLevels() {
  return request({
    url: '/admin/user-levels',
    method: 'get'
  })
}

/**
 * 更新用户等级
 * @param {number} id - 用户ID
 * @param {number} levelId - 等级ID
 * @returns {Promise} 返回更新结果
 */
export function updateUserLevel(id, levelId) {
  return request({
    url: `/admin/users/${id}/level`,
    method: 'put',
    data: { levelId }
  })
}

/**
 * 获取用户标签列表
 * @returns {Promise} 返回标签列表
 */
export function getUserTags() {
  return request({
    url: '/admin/user-tags',
    method: 'get'
  })
}

/**
 * 更新用户标签
 * @param {number} id - 用户ID
 * @param {string[]} tags - 标签数组
 * @returns {Promise} 返回更新结果
 */
export function updateUserTags(id, tags) {
  return request({
    url: `/admin/users/${id}/tags`,
    method: 'put',
    data: { tags }
  })
}

/**
 * 获取用户积分记录
 * @param {number} id - 用户ID
 * @param {Object} params - 查询参数
 * @returns {Promise} 返回积分记录
 */
export function getUserPoints(id, params) {
  return request({
    url: `/admin/users/${id}/points`,
    method: 'get',
    params
  })
}

/**
 * 调整用户积分
 * @param {number} id - 用户ID
 * @param {Object} data - 积分调整数据
 * @returns {Promise} 返回调整结果
 */
export function adjustUserPoints(id, data) {
  return request({
    url: `/admin/users/${id}/points/adjust`,
    method: 'post',
    data
  })
}

/**
 * 获取用户优惠券
 * @param {number} id - 用户ID
 * @param {Object} params - 查询参数
 * @returns {Promise} 返回优惠券列表
 */
export function getUserCoupons(id, params) {
  return request({
    url: `/admin/users/${id}/coupons`,
    method: 'get',
    params
  })
}

/**
 * 发放优惠券给用户
 * @param {number} id - 用户ID
 * @param {number} couponId - 优惠券ID
 * @returns {Promise} 返回发放结果
 */
export function grantUserCoupon(id, couponId) {
  return request({
    url: `/admin/users/${id}/coupons`,
    method: 'post',
    data: { couponId }
  })
} 